<%@page import="migracion.ArregloPorLoDeSeba"%>
<%@page import="java.util.Iterator"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="util.*"%>
<%@page import="entidades.*"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Date"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.LinkedList"%>
<%@page import="java.text.SimpleDateFormat"%>

<html>
<head>

<%@ include file="jspf/head.jspf" %>

<script type="text/javascript" src="js/sp/ordenes-trabajo-edit.js"></script>

</head>
<body>

<%@ include file="jspf/header.jspf" %>

<br/>

<h1>Editar orden de trabajo</h1>

<br/>

<%
int id = Util.parseInt(request.getParameter("id"));
OrdenTrabajo ot = (id > 0)? new OrdenTrabajo(id) : null;
String accion = (request.getParameter("accion") != null)? request.getParameter("accion") : "";

try{
	if(accion.compareTo("guardar") == 0)
		{
                boolean recalcularEN = false;
		
                int estadoInicial = ot.getEstado().getId();
                int estadoOT = Integer.parseInt(request.getParameter("estado"));
		ot.setIdentificador(request.getParameter("identificador"));
                if (!request.getParameter("cantidad").contains(".")){
//                    ot.setCantidad(request.getParameter("cantidad"));
                    long cantidad = Util.parseLong(request.getParameter("cantidad"));
                    if( ot.getCantidad() > 0 && ot.getCantidad() != cantidad){
                       recalcularEN = true; 
                    }
                    ot.setCantidad(cantidad);
                }
                int cicloNewlongId = Util.parseInt(request.getParameter("ciclo_newlong_id"));
                if (cicloNewlongId > 0){
                    ot.setEstadoId(estadoOT);
                    if(cicloNewlongId != ot.getCicloNewlongId()){
			CicloNewlong cn = new CicloNewlong(cicloNewlongId);
                        if (ot.getCantidad() <= cn.getDisponible() ){
                            //si ya habia un cn asignado a la ot voy a tener que recalcular las etapas newlong
                            if (ot.getCicloNewlongId() > 0){
                                recalcularEN = true;
                            }
                            ot.setCicloNewlongId(cicloNewlongId);
                            ot.setCicloNewlongTurno(0);
                            ot.setCicloNewlong(cn);
                            //if (ot.getEstado().getId() == EstadoTrabajo.DEMORADA
                              //      &&
                               // estadoOT == EstadoTrabajo.PENDIENTE )
                           // {
                             //   ot.setFechaPrometida(Util.format(new Date(cn.fechaFinDeConfeccion(ot.getFormatoId(),ot.getCantidad()).getTime() + (Tiempos.getDiasDespacho(ot.getOrdenVenta().getPaisId(), cn.getNewlongId(), ot.getOrdenVenta().getLinea().getId()) * 86400000)), "dd/MM/yyyy"));
                           // }                            
                        }else{
                            throw new Exception();
                        }
                     }else{
                            if (
                                    ot.getCantidad() > ot.getCicloNewlong().getDisponible()
                                    &&
                                    (
                                        estadoInicial == EstadoTrabajo.DEMORADA
                                        &&
                                        ot.getEstadoId() != EstadoTrabajo.DEMORADA
                                    )
                               ){
                              throw new Exception();
                            }

                     }
		}

                int cicloUtecoId = Util.parseInt(request.getParameter("ciclo_uteco_id"));
                if(cicloUtecoId > 0 && cicloUtecoId != ot.getCicloUtecoId())
		{
                    ot.setCicloUtecoId(cicloUtecoId);
                    ot.setCicloUtecoTurno(0);
		}

                ot.guardar();
                ot.getOrdenVenta().setManijaId(Util.parseInt(request.getParameter("manija")));
                ot.getOrdenVenta().setLogotipoId(Util.parseInt(request.getParameter("logotipo")));
                ot.getOrdenVenta().setTipoPapelId(Util.parseInt(request.getParameter("papel")));
                ot.getOrdenVenta().guardar();
                
                if(recalcularEN){
                    ArregloPorLoDeSeba.recalcularEtapasPorNewlong(ot.getCicloNewlong().getNewlongId());
                }
        }
}catch(Exception e) { 
    out.println("<div id=\"dialog_error\" title=\"Error\">La cantidad supera el disponible del ciclo elegido</div>");
}
    %>


<!-- Formulario de amb-->
<form method="post" action="" id="form_edicion" accept-charset="utf-8">
	<input type="hidden" name="accion" value="guardar"/>
	<input type="hidden" name="id" value="<%= ot.getId() %>"/>
        <input type="hidden" name="vertodo" value="No"/>
        <input type="hidden" name="vertodoUteco" value="No"/>

	<center><table class="formulario" id="table_edicion">
		<tr>
			<td class="label">Work order</td>
			<td class="input">
				<% if(Sesiones.tienePermiso(session, "ordenes_trabajo", "write"))  { %>
				<input type="text" name="identificador" value="<%= ot.getIdentificador() %>"/>
				<% } else { %>
				<%= ot.getIdentificador() %>
				<% } %>
			</td>
			<td class="label">Estado</td>
			<td class="input">
				<% if(Sesiones.tienePermiso(session, "ordenes_trabajo", "write"))  { %>
				<select name="estado">
				<%
				List<EstadoTrabajo> estados = EstadoTrabajo.listar();
				for(int i=0; i<estados.size(); i++)
					{
					boolean selected = estados.get(i).getId() == ot.getEstadoId();
					%><option value="<%= estados.get(i).getId() %>" <%= (selected? "selected=\"selected\"" : "") %>><%= estados.get(i).getDescriptor() %></option><%
					}
				%>
				</select>
				<% } else { %>
				<%= ot.getEstado().getDescripcion() %>
				<% } %>
			</td>
		</tr>
		<tr>
			<td class="label">Formato</td>
			<td class="input"><%= ot.getFormato() %></td>
			<td class="label">Linea</td>
			<td class="input"><%= ot.getOrdenVenta().getLinea() %></td>
		<tr>
			<td class="label">Cantidad</td>
                        <td><input type="text" name="cantidad" value="<%= Util.numero.format(ot.getCantidad()) %>"/></td>
		</tr>
		<tr>
			<td class="label">Fecha prometida</td>
			<td class="input"><%= ot.getFechaPrometidaToString() %></td>
			<td></td>
			<td></td>
		</tr>
		<% if(ot.getCicloUteco() != null) { %>
		<tr>
			<td class="label">Impresión</td>
			<td class="input" colspan="3">
				<input type="radio" name="ciclo_uteco_id" checked="checked" value="<%= ot.getCicloUtecoId() %>"/> <%= ot.getCicloUtecoFinToString() + " - Disponible: " + ot.getCicloUteco().getCapacidadDisponible() + " ("+ot.getCicloUteco().getPorcentajeDisponible()+"%)" %>
				<%
				if(Sesiones.tienePermiso(session, "ordenes_trabajo", "write"))
					{
                                        List<CicloUteco> ciclosU = null;
                                        if (ot.getCicloNewlong() != null){
                                            ciclosU = CicloUteco.listarDisponibles(ot.getCicloNewlongInicio(), ot, true, false);
                                        }else{
                                            ciclosU = CicloUteco.fechasPosiblesUteco(ot);
                                        }
                                        String vertodoUteco = request.getParameter("vertodoUteco");
                                        int total = 0;
                                        if(vertodoUteco != null && vertodoUteco.compareTo("Si") == 0)
                                            {
                                              total = ciclosU.size();
                                            }else{
                                             if (ciclosU.size() > 6 ){
                                                 total = 6;
                                                 }else{
                                                 total = ciclosU.size();
                                                 }
                                              }
					for(int i=0,n=total; i<n; i++)
						{
						CicloUteco cu  = ciclosU.get(i);
						if(cu.getId() != ot.getCicloUtecoId())
							{ %><br/><input type="radio" name="ciclo_uteco_id" value="<%= cu.getId() %>"/> <%= Util.format(cu.calcularImpresion(ot.getMetros()), "dd/MM/yyyy") + " - Disponible: " + cu.getCapacidadDisponible() + " ("+cu.getPorcentajeDisponible()+"%)" %><% }
						}
					}

				%>
			</td>
		</tr>
                            <%if (request.getParameter("vertodoUteco") == null || request.getParameter("vertodoUteco").compareTo("No") == 0){%>
                                                    <tr>
                                                        <td></td>
                                                        <td><a href="#" name="button_mostrar_todo_uteco"><img id="button_mostrar_todo" src="icon/plus.png" alt="" title="Ver todo"/> <span style="position:relative; bottom:3px;">Ver todo</span></a></td>
                                                    </tr>

		<%} } else{ %>
                    <tr>
			<td class="label">Impresión</td>
			<td class="input" colspan="3">
				<%
				if(Sesiones.tienePermiso(session, "ordenes_trabajo", "write"))
					{
                                        List<CicloUteco> ciclosU = null;
                                        if (ot.getCicloNewlong() != null){
                                            ciclosU = CicloUteco.listarDisponibles(ot.getCicloNewlongInicio(), ot, true, false);
                                        }else{
                                            ciclosU = CicloUteco.fechasPosiblesUteco(ot);
                                        }
                                        %>
                                        <input type="radio" name="ciclo_uteco_id" checked="checked" value="<%= ciclosU.get(0).getId() %>"/> <%= Util.format(ciclosU.get(0).calcularImpresion(ot.getMetros()), "dd/MM/yyyy") + " - Disponible: " + ciclosU.get(0).getCapacidadDisponible() + " ("+ciclosU.get(0).getPorcentajeDisponible()+"%)" %>
                                        <%
                                        String vertodoUteco = request.getParameter("vertodoUteco");
                                        int total = 0;
                                        if(vertodoUteco != null && vertodoUteco.compareTo("Si") == 0)
                                            {
                                              total = ciclosU.size();
                                            }else{
                                             if (ciclosU.size() > 6 ){
                                                 total = 6;
                                                 }else{
                                                 total = ciclosU.size();
                                                 }
                                              }
					for(int i=0,n=total; i<n; i++)
						{
						CicloUteco cu  = ciclosU.get(i);
						if(cu.getId() != ot.getCicloUtecoId())
							{ %><br/><input type="radio" name="ciclo_uteco_id" value="<%= cu.getId() %>"/> <%= Util.format(cu.calcularImpresion(ot.getMetros()), "dd/MM/yyyy") + " - Disponible: " + cu.getCapacidadDisponible() + " ("+cu.getPorcentajeDisponible()+"%)" %><% }
						}
					}

				%>
			</td>
		</tr>
                            <%if (request.getParameter("vertodoUteco") == null || request.getParameter("vertodoUteco").compareTo("No") == 0){%>
                                                    <tr>
                                                        <td></td>
                                                        <td><a href="#" name="button_mostrar_todo_uteco"><img id="button_mostrar_todo" src="icon/plus.png" alt="" title="Ver todo"/> <span style="position:relative; bottom:3px;">Ver todo</span></a></td>
                                                    </tr>

		<%} } %>
		<% if(ot.getCicloNewlong() != null) { %>
		<tr>
			<td class="label">Confección</td>
			<td class="input" colspan="3">
                                <% if (ot.getCicloNewlong() != null) {%>
                                    <input type="radio" name="ciclo_newlong_id" checked="checked" value="<%= ot.getCicloNewlongId() %>"/> <%= Util.format(ot.getCicloNewlongFin(),"dd/MM/yyyy") + " - Disponible: " + ot.getCicloNewlong().getDisponible() + " ("+ot.getCicloNewlong().getPorcentajeDisponible()+"%)" %>
				<%}else{%>
                                    <input type="radio" name="ciclo_newlong_id" checked="checked" value=""/>
                                   <%}%>
                                <%
				if(Sesiones.tienePermiso(session, "ordenes_trabajo", "write"))
					{
                                        //List<Map> ciclosN = ot.calcularFechasPosibles(0L);
					List<Map> ciclosN = CicloNewlong.fechasPosiblesConFiltroPais(
                                                ot.getFormatoId(), ot.getCantidad(), ot.getCicloUtecoFin(), false, ot.getOrdenVenta().getPaisId()
                                              );
                                        
					int total = 0;
                                        String vertodo = request.getParameter("vertodo");
                                        if(vertodo != null && vertodo.compareTo("Si") == 0)
                                            {
                                              total = ciclosN.size();
                                            }else{
                                              total = (ciclosN.size()>0)?6:0;
                                              }
                                        for(int i=0,n=total; i<n; i++)
						{
						Map cn = ciclosN.get(i);
						if(Util.parseInt(cn.get("cicloNewlongId").toString()) != ot.getCicloNewlongId() && Util.parseInt(cn.get("paisId").toString()) == ot.getOrdenVenta().getPais().getId())
							{
							Date fechaFin = (Date) cn.get("fechaHoraFin");
							boolean superaPrometida = fechaFin.getTime() > ot.getFechaPrometida().getTime();
							%><br/><input type="radio" name="ciclo_newlong_id" value="<%= cn.get("cicloNewlongId") %>"/><%
							if(superaPrometida) out.println("<span style=\"color:#aa0000\">");
							//out.println(" Newlong " + cn.get("newlongId") + " - " + Util.format(fechaFin, "dd/MM/yyyy") + " - Disponible: " + cn.get("cantidadDisponible") + " ("+cn.get("porcentajeDisponible") + "%)");
							out.println(Util.format(fechaFin, "dd/MM/yyyy") + " - Disponible: " + cn.get("cantidadDisponible") + " ("+cn.get("porcentajeDisponible") + "%)");
                                                        if(superaPrometida) out.println("</span>");
							}
						}
                                                }
                                                %></td></tr><%

                                                if (request.getParameter("vertodo") == null || request.getParameter("vertodo").compareTo("No") == 0){%>
                                                    <tr>
                                                        <td></td>
                                                        <td><a href="#" name="button_mostrar_todo"><img id="button_mostrar_todo" src="icon/plus.png" alt="" title="Ver todo"/> <span style="position:relative; bottom:3px;">Ver todo</span></a></td>
                                                    </tr>
                                                <%}

				%>


		<% } else {
                    if (!ot.isSoloImpresion()){
                    %>
                    <tr>
			<td class="label">Confección</td>
			<td class="input" colspan="3">
                                <%
				if(Sesiones.tienePermiso(session, "ordenes_trabajo", "write"))
					{
					List<Map> ciclosN = CicloNewlong.fechasPosiblesConFiltroPais(
                                                ot.getFormatoId(), ot.getCantidad(), new Date(), false,ot.getOrdenVenta().getPaisId()
                                                );
                                %><input type="radio" name="ciclo_newlong_id" checked="checked" value="<%= ciclosN.get(0).get("cicloNewlongId") %>"/> <%= Util.format((Date)ciclosN.get(0).get("fechaHoraFin"),"dd/MM/yyyy")  + " - Disponible: " + ciclosN.get(0).get("cantidadDisponible") + " ("+ciclosN.get(0).get("porcentajeDisponible")+"%)" %>
                                <%
                                        int total = 0;
                                        String vertodo = request.getParameter("vertodo");
                                        if(vertodo != null && vertodo.compareTo("Si") == 0)
                                            {
                                              total = ciclosN.size();
                                            }else{
                                              total = 6;
                                              }
                                        for(int i=0,n=total; i<n; i++)
						{
						Map cn = ciclosN.get(i);
						if(Util.parseInt(cn.get("cicloNewlongId").toString()) != ot.getCicloNewlongId() && Util.parseInt(cn.get("paisId").toString()) == ot.getOrdenVenta().getPais().getId())
							{
							Date fechaFin = (Date) cn.get("fechaHoraFin");
							boolean superaPrometida = true;
							%><br/><input type="radio" name="ciclo_newlong_id" value="<%= cn.get("cicloNewlongId") %>"/><%
							if(superaPrometida) out.println("<span style=\"color:#aa0000\">");
							//out.println(" Newlong " + cn.get("newlongId") + " - " + Util.format(fechaFin, "dd/MM/yyyy") + " - Disponible: " + cn.get("cantidadDisponible") + " ("+cn.get("porcentajeDisponible") + "%)");
							out.println(Util.format(fechaFin, "dd/MM/yyyy") + " - Disponible: " + cn.get("cantidadDisponible") + " ("+cn.get("porcentajeDisponible") + "%)");
                                                        if(superaPrometida) out.println("</span>");
							}
						}
                                                }
                                                %></td></tr><%

                                                if (request.getParameter("vertodo") == null || request.getParameter("vertodo").compareTo("No") == 0){%>
                                                    <tr>
                                                        <td></td>
                                                        <td><a href="#" name="button_mostrar_todo"><img id="button_mostrar_todo" src="icon/plus.png" alt="" title="Ver todo"/> <span style="position:relative; bottom:3px;">Ver todo</span></a></td>
                                                    </tr>
                                                <%}

				%>


		<% }} %>
		<tr><td colspan="4"></td></tr>
		<tr>
			<td class="label">Sales order</td>
			<td class="input"><%= ot.getOrdenVenta().getIdentificador() %></td>
			<td class="label">Logotipo</td>
                        <td class="input">
                                <select name="logotipo" >
				<%
                                        List<Logotipo> logotipos = Logotipo.listar();
                                        for(int i=0; i<logotipos.size(); i++)
					{
                                            boolean selected = logotipos.get(i).getId() == ot.getOrdenVenta().getLogotipo().getId();
                                            %><option value="<%= logotipos.get(i).getId() %>" <%= (selected? "selected=\"selected\"" : "") %>><%= logotipos.get(i).getDescriptor() %></option><%
					}
                                        %>
				</select>
					</td>
		</tr>
		<tr>
			<td class="label">Tipo de papel</td>
                        <td class="input">
                                <select name="papel" >
				<%
                                        List<TipoPapel> tiposPapel = TipoPapel.listar();
                                        for(int i=0; i<tiposPapel.size(); i++)
					{
                                            boolean selected = tiposPapel.get(i).getId() == ot.getOrdenVenta().getTipoPapel().getId();
                                            %><option value="<%= tiposPapel.get(i).getId() %>" <%= (selected? "selected=\"selected\"" : "") %>><%= tiposPapel.get(i).getDescriptor() %></option><%
					}
                                        %>
				</select>
					</td>
			<td class="label">Manija</td>
			<td class="input">
                                <select name="manija" class="manija">
				<%
                                        List<Manija> tipos = Manija.listar();
                                        for(int i=0; i<tipos.size(); i++)
					{
                                            boolean selected = tipos.get(i).getId() == ot.getOrdenVenta().getManija().getId();
                                            %><option value="<%= tipos.get(i).getId() %>" <%= (selected? "selected=\"selected\"" : "") %>><%= tipos.get(i).getDescriptor() %></option><%
					}
                                        %>
				</select>
					</td>
		</tr>
		<tr>
			<td class="label">Interior</td>
			<td class="input"><%= ot.getOrdenVenta().isInterior()? "Si" : "No" %></td>
			<td class="label">Laca UV</td>
			<td class="input"><%= ot.getOrdenVenta().getLacaUv() %></td>
		</tr>
		<tr>
			<td class="label">Barniz</td>
			<td class="input"><%= ot.getOrdenVenta().isBarniz()? "Si" : "No" %></td>
			<td class="label">Cantidad <br/>de colores</td>
			<td class="input"><%= ot.getOrdenVenta().getCantidadColores() %></td>
		</tr>
		<tr>
			<td colspan="4" class="input" style="text-align:center;">
				<%
				String urlVolver = "ordenes-trabajo.jsp";
				if(request.getParameter("volver_url") != null)
					{ urlVolver = request.getParameter("volver_url"); }
				else
					{ if(request.getHeader("referer") != null) urlVolver = request.getHeader("referer"); }
				%>
				<input type="hidden" name="volver_url" value="<%= urlVolver %>"/>
				<button name="volver"><img src="icon/arrow_left.png" alt="" title="Volver"/> <span>Volver</span></button>
				<% if( Sesiones.tienePermiso(session, "ordenes_trabajo", "write") ) { %>
				<button name="eliminar"><img src="icon/stop.png" alt="" title="Eliminar"/> <span>Eliminar</span></button>
				<button name="guardar"><img src="icon/save.png" alt="" title="Guardar orden"/> <span>Guardar</span></button>
				<% } %>
			</td>
		</tr>
	</table></center>

</form>


<%@ include file="jspf/footer.jspf" %>

</body>
</html>
